home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / sbin / nessus-update-plugins < prev    next >
Text File  |  2006-06-13  |  4KB  |  206 lines

  1. #!/bin/sh
  2. #
  3. # nessus-update-plugins
  4. #
  5. # This script will retrieve all the newest plugins from 
  6. # www.nessus.org using the utility 'nessus-fetch'.
  7. # Author  : Renaud Deraison <deraison@cvs.nessus.org>
  8. # License : GPL (but for two lines of script, does it matter ?)
  9. #
  10. # usage : nessus-update-plugins [-v]
  11. #
  12. # -d <dir>  : use <dir> as the plugin dir
  13. # -v        : be verbose
  14. # -vv       : be more verbose (debug)
  15. #
  16.  
  17.  
  18. #
  19. # The command we use to retrieve the plugins
  20. #
  21.  
  22.  
  23. #-------------- DO NOT EDIT THIS FILE BEYOND THAT POINT ---------------------#
  24.  
  25.  
  26.  
  27. gzip=/bin/gzip
  28. prefix=/usr
  29. exec_prefix=${prefix}
  30. bindir=${exec_prefix}/bin
  31. sbindir=${exec_prefix}/sbin
  32. libexecdir=${exec_prefix}/libexec
  33. datadir=/usr/share
  34. sysconfdir=/etc
  35. sharedstatedir=${prefix}/com
  36. localstatedir=/var/lib
  37. libdir=${exec_prefix}/lib
  38. includedir=${prefix}/include
  39. oldincludedir=/usr/include
  40. infodir=/usr/share/info
  41. mandir=/usr/share/man
  42.  
  43. pluginsdir="$libdir/nessus/plugins"
  44.  
  45.  
  46.  
  47. case `id` in uid=0*) ;; 
  48.    *euid=0*) ;;
  49.    *)
  50.     echo "only root should use nessus-update-plugins"
  51.         exit 1
  52.     esac
  53.     
  54.  
  55. if [ ! -x "$bindir/nessus-fetch" ]; then
  56.  echo "nessus-fetch(1) (part of nessus-core) is not installed on your system"
  57.  echo "Aborting"
  58.  exit 1
  59. fi
  60.  
  61. if [ ! -x "$gzip" ]; then
  62.  echo "gzip is not installed on your system"
  63.  echo "Aborting"
  64. fi
  65.  
  66. if [ ! -r "$sysconfdir/nessus/nessusd.conf" ]; then
  67.     if [ ! -e "$sysconfdir/nessus/nessusd.conf" ]; then
  68.     echo "$sysconfdir/nessus/nessusd.conf does not exist!"
  69.     echo "Do you have the nessus daemon installed?"
  70.     else
  71.     echo "I cannot read $sysconfdir/nessus/nessusd.conf."
  72.     echo "Are you root?"
  73.     fi
  74.     exit 1
  75. fi
  76. newdir=`awk '/plugins_folder/ {print $3}' $sysconfdir/nessus/nessusd.conf`
  77. test -n "$newdir" && pluginsdir="$newdir"
  78.  
  79.  
  80.  
  81.  
  82. help_screen()
  83. {
  84.  echo "nessus-update-plugins 2.0.0, by Renaud Deraison <deraison@cvs.nessus.org>"
  85.  echo
  86.  echo
  87.  echo "Usage : nessus-update-plugins [-v][-h]"
  88.  echo
  89.  echo "-v              : be verbose"
  90.  echo "-h              : this help screen"
  91.  echo
  92.  echo "Default action  : update the nessusd plugins"
  93.  exit 0
  94. }
  95.  
  96.  
  97.  
  98. opts=`getopt "vh" $*`
  99.  
  100. for i in $opts
  101. do
  102.  case $i in
  103.  -h )
  104.    help_screen
  105.    ;;
  106.    
  107.   -v)
  108.    if [ -z "$verbose" ];
  109.     then
  110.       verbose="y"
  111.      else
  112.        set -x
  113.    fi
  114.    ;;
  115.  esac
  116. done
  117.  
  118.  
  119. if [ -z "$verbose" ];
  120. then
  121.  tar="-xf"    
  122. else
  123.  tar="-xvf"
  124. fi
  125.  
  126.  
  127.  
  128. if [ ! -d $pluginsdir ] ; then
  129.     echo "Plugindir $pluginsdir is not a directory!"
  130.     exit 1
  131. fi
  132.  
  133.  
  134.     
  135. cwd=`pwd`
  136. tmpdir=$TEMPDIR
  137. test -z "$tmpdir" &&
  138. {
  139.  tmpdir=$TMPDIR
  140.  test -z "$tmpdir" && tmpdir=/tmp
  141. }
  142.  
  143.  
  144. mkdir -m 0700 "$tmpdir/nessus-update-plugins-$$" || {
  145.     echo "Could not create temporary directory ($tmpdir/nessus-update-plugins-$$)"
  146.     exit 1
  147. }
  148. cd "$tmpdir/nessus-update-plugins-$$"
  149. $bindir/nessus-fetch --plugins-md5 || { 
  150.     echo "Could not retrieve the plugins MD5"
  151.     echo "Aborting"
  152.     exit 1
  153.     }
  154.  
  155. test -s "$pluginsdir/MD5" && {
  156.     if [ -x /usr/bin/diff ];
  157.     then 
  158.      diff "$pluginsdir/MD5"  all-2.0.tar.gz.md5 > /dev/null && {
  159.      cd "$cwd"
  160.      rm -rf "$tmpdir/nessus-update-plugins-$$"
  161.      exit 0
  162.     }
  163.     fi
  164. }
  165.  
  166.  
  167. $bindir/nessus-fetch --plugins || {
  168.     echo "Could not retrieve the Nessus plugins"
  169.     echo "Aborting"
  170.     exit 1 
  171.     }
  172.     
  173.  
  174. # Check the archive signature
  175. test -x $sbindir/nessus-check-signature && {
  176.     $sbindir/nessus-check-signature all-2.0.tar.gz all-2.0.sig || {
  177.         echo "Aborting"
  178.         exit 1
  179.         }
  180.     }
  181.  
  182. rm -f all-2.0.sig
  183.     
  184. cd "$pluginsdir/"
  185. $gzip -cd "$tmpdir/nessus-update-plugins-$$/all-2.0.tar.gz" | tar $tar - 
  186. rm -f "$pluginsdir/MD5"
  187. mv "$tmpdir/nessus-update-plugins-$$/all-2.0.tar.gz.md5" "$pluginsdir/MD5"
  188.  
  189. cd "$cwd"
  190. rm -rf "$tmpdir/nessus-update-plugins-$$"
  191.  
  192. chown -R 0:0 "$pluginsdir/"
  193.  
  194.  
  195. # HUP nessusd
  196. test -f /var/lib/nessus/nessusd.pid && {
  197.     pid=`cat /var/lib/nessus/nessusd.pid`
  198.     kill -1 $pid 2>/dev/null
  199. }
  200.  
  201. exit 0
  202.